message_passing: derive component_requirements#555
Conversation
b4f1ab3 to
b3cd6c0
Compare
b3cd6c0 to
40fa793
Compare
| section "System Requirements" { | ||
|
|
||
| ScoreReq.CompReq SafetyCertifiedTransportMechanismUnderQNX { | ||
| description = "Under QNX, the message passing component shall use a safety-certified transport mechanism as the underlying IPC." |
There was a problem hiding this comment.
That's basically the same statement as in the upper requirement. We should define here that we are using message passing.
There was a problem hiding this comment.
We also should have a requirement what we use for linux to satisfy that this is OS abstracted
| } | ||
|
|
||
| ScoreReq.CompReq OSProvidedSenderIdentity { | ||
| description = "The message passing server shall be able to identify the sender of each received message by the sender's OS-provided UID." |
There was a problem hiding this comment.
UID = user-id?
or unique id, if unique id, then is the question what unique id?
If user-id, then we need an aou that every process should have a different user-id, and we should link this here somehow.
| } | ||
|
|
||
| ScoreReq.CompReq UnforgableSenderIdentity { | ||
| description = "The transport mechanism shall ensure that the UID used to identify a message, cannot be forged by the client." |
There was a problem hiding this comment.
This would then be a requirement towards the OS, no?
There was a problem hiding this comment.
According to my picture this would be an ExternalComponentRequirement
| section "Behaviour Requirements" { | ||
|
|
||
| ScoreReq.CompReq ServerCallbacksAreSequential { | ||
| description = "The server shall serialize all callbacks belonging to the same IServer instance, such that no two such callbacks execute concurrently." |
There was a problem hiding this comment.
what is an IServer instance?
| } | ||
|
|
||
| ScoreReq.CompReq ServerProcessesSinglePendingRequest { | ||
| description = "The server shall not dispatch a new sent-with-reply message callback on a given IServerConnection until the preceding request has been replied to via `IServerConnection::Reply()`." |
There was a problem hiding this comment.
Again IServerConnection, this sounds like implementation detail - I think what you did below with ´ClientConnection´ is maybe a little bit more abstract?
| } | ||
|
|
||
| ScoreReq.CompReq ClientConnectionMaintainsStateMachine { | ||
| description = "The `ClientConnection` shall maintain a state machine with the states `Starting`, `Ready`, `Stopping`, and `Stopped`." |
There was a problem hiding this comment.
What is the allowed transitions between these states? Should we draw this in a state diagram?
| } | ||
|
|
||
| ScoreReq.CompReq IServerStopListeningAPI { | ||
| description = "`IServer` shall provide a `StopListening` method that releases all registered callbacks and closes all active server connections." |
There was a problem hiding this comment.
I really like this way of writing the API requirements, without exactly specifying the C++ API!
No description provided.